--init.lua
--modules: adc,file,gpio,i2c,mqtt,net,node,ow,pwm,sjson,spi,tmr,u8g2,uart,websocket,wifi
require("wifi_mgr")
require("gui_mgr")
require("gui_src")
--require("websocket")
--require("adc")
require("ntp")
require("file")
require("gpio")
require("mqtt")
require("node")
require("ow")
--require("pwm")
require("sjson")
require("tmr")
require("u8g2")
require("uart")
require("wifi")
require("sntp")
--require("bit")
--require("main")
require("json")

print("\r\nthis is the init.lua\r\n")
print("available heap memory:"..node.heap())
wifi_mgr.wifi_exit()
main_co = nil

local weat_cron_tmr
local net_cron_tmr

local function weather_cron_task()
    --每次timer都刷新
    gui_mgr.desire_update(gui_src.weather_display)
end

local function net_cron_task()
    gui_mgr.desire_update(gui_src.net_config_display)
end

local function step2_main()
    --2秒后刷新页面,获取天气
    tmr.create():alarm(1000*2, tmr.ALARM_SINGLE, function()
        weat_cron_tmr:start()
        net_cron_tmr:unregister()
        json.decode_weather()
    end)
    --之后每1200秒获取一次天气
    tmr.create():alarm(1000*1200, tmr.ALARM_AUTO, function()
        json.decode_weather()
    end)
end

local function lua_main()
    --这里执行上电后就可以做的事情,一般是初始化

    local step1 = coroutine.yield()
    --这里执行联网后可以做的事情
    step2_main()
    local step2 = coroutine.yield()
    --这里执行loop的事情
    while true do
        local step3 = coroutine.yield()
    end
end

wifi_mgr.wifi_init('caiyuanzi', '12345678')
gui_mgr.gui_init(5,6)
ntp.set_ntp(0)

net_cron_tmr = tmr.create()
net_cron_tmr:register(1000, tmr.ALARM_AUTO, net_cron_task)
net_cron_tmr:start()

weat_cron_tmr = tmr.create()
weat_cron_tmr:register(1000, tmr.ALARM_AUTO, weather_cron_task)

--=node.heap()
main_co  = coroutine.create(lua_main)
local status, val = coroutine.resume(main_co)
if status == false then
    print("main start fail\n")
end



